热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Git|CentOS7搭建git服务端

大多数情况下我们使用github托管,特别是私库免费以后,但是github被黑也会有宕机的时候,那怎么办呀,就是喜欢用git呀,特别是微信小程序的官方编辑器用svn时代码颜色不更改

大多数情况下我们使用github托管,特别是私库免费以后,但是github被黑也会有宕机的时候,那怎么办呀,就是喜欢用git呀,特别是微信小程序的官方编辑器用svn时代码颜色不更改呀(不知道版本更新后是否支持),都不知道改了哪行~😧这个时候我们可以考虑在私有服务器搭建git服务端。

安装

目前通过yum -y install git安装的git版本为 1.8.3.1。

《Git | CentOS 7搭建git服务端》

但是官方git仓库的最新版目前是2.9.5

《Git | CentOS 7搭建git服务端》

想要安装最新版的git只能下载压缩的源码包安装。

# 查看原来是否有git的相关包
rpm -qa|grep git
# 可能的结果为 git-1.8.3.1-20.el7.x86_64
# 删除git包
rpm -e perl-Git
rpm -e git
# 安装依赖
yum install curl-devel expat-devel openssl-devel zlib-devel
# 下载2.9.5版本压缩包 soft为自建目录
cd /usr/local/soft
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
# 解压
tar -xzvf git-2.9.5.tar.gz
# 编译安装
cd git-2.9.5
make prefix=/usr/local all
make prefix=/usr/local install

当前可通过 ./git --version查看

《Git | CentOS 7搭建git服务端》

配置环境变量

vi /etc/profile在最后加入export PATH=/usr/local/soft/git-2.9.5:$PATH

vi /etc/profile
i
最后加入export PATH=/usr/local/soft/git-2.9.5:$PATH
Esc :wq
# 生效环境变量
source /etc/profile

至此安装结束,然后就可以愉快的到处使用啦~

添加管理git的用户

# 创建用户git
useradd git
# 修改用户git的密码(要求>8个字符)输入两遍新密码
passwd git

通过cd /home && ls -al可以看见用户已经创建成功

《Git | CentOS 7搭建git服务端》

使用git

平常在使用别人的轮子时都是直接使用git clone [https url]到本地,但是我们自己的项目管理时,还可以使用ssh的方式。这两种方式的区别在于https的pull和push时需要输入密码,使用ssh的需要先配置和添加好SSH key就不用每次操作输入密码啦~

服务端创建仓库示例

su git
mkdir sunflowercoder-blog.git
cd sunflowercoder-blog.git
git init --bare

可以看见在/home/git/sunflowercoder-blog.git目录下已经初始化了一个空的git项目

《Git | CentOS 7搭建git服务端》

没安装git客户端的,自行先去官网下载安装。

客户端使用http访问

当前的情况下,已经是可以使用http访问啦。
客户端使用http示例

# 克隆项目
git clone git@[服务端ip地址]:/home/git/sunflowercoder-blog.git

输入git用户的密码后,等待传输结束即可。

《Git | CentOS 7搭建git服务端》

创建README.md,上传到服务器,并查看日志。

cd sunflowercoder-blog
# 创建README.md
touch README.md
# 提交到缓存
git commit -m "初始化README.md"
# 上传服务端
git push origin master
# 等待传输完成 查看日志
git log

《Git | CentOS 7搭建git服务端》

客户端使用ssh访问

使用ssh访问稍稍麻烦一点,需要先生成ssh公钥。

创建git使用者(已经创建的忽略这一步)

git config --global user.name "[用户名]"
git config --global user.email "[邮箱]"
git config --list --global

可以看见已经设置的全局变量:

《Git | CentOS 7搭建git服务端》

生成ssh公钥(已经生成的 忽略这一步)

ssh-keygen -t rsa -C "[邮箱]"

一直按回车 Enter,结束后,在提示的C盘的用户目录下。

《Git | CentOS 7搭建git服务端》

可以看见.ssh/id_rsa.pub为我们需要的公钥,id_rsa是密钥,不能告诉任何人哦

《Git | CentOS 7搭建git服务端》

服务端配置ssh访问

默认/etc/ssh/sshd_config中的RSA认证是打开的

RSAAuthentication yes

默认的RSA认证文件为.ssh/authorized_keys,如在用户目录下不存在需要自己创建

su git
cd ~
mkdir .ssh
touch .ssh/authorized_keys
# 默认的目录权限为drwxrwxr-x,文件的权限为-rw-rw-r-- ,安全起见可降低等级
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

公钥上传的服务端

可以手动打开客户端 .ssh/id_rsa.pub 复制到服务端 .ssh/authorized_keys中,Esc :wq保存退出。

也可以使用

ssh git@[服务端地址] 'cat >> .ssh/authorized_keys' <~/.ssh/id_rsa.pub

《Git | CentOS 7搭建git服务端》

至此我们就可以愉快的使用ssh访问啦,不需要密码验证。clone时也不需要,如下图,上面的为已配置ssh的,下面的为取消配置的

《Git | CentOS 7搭建git服务端》

禁止用户git通过shell登录

因为前面配置ssh访问,所以当前的git账户是可以通过ssh访问服务器的。

《Git | CentOS 7搭建git服务端》

为了安全起见,禁止客户端通过shell远程登录服务器。切换用户git,在根目录下创建git-shell-commands

《Git | CentOS 7搭建git服务端》

注意:该目录为git shell需要的,不然会报

fatal: Interactive git shell is not enabled.

hint: ~/git-shell-commands should exist and have read and execute access.

修改/etc/passwd文件

# 切换root
su root
# 编辑文件
vi /etc/passwd
i
# 找到git开始的
git:x:1000:1000::/home/git:/bin/bash
# 更改为
git:x:1000:1000::/home/git:/bin/git-shell
Esc :wq

此时我们就不用担心客户端通过shell登录,只允许使用git-shell进行管理git的仓库。

注意:这种方式适用于开发者较少的情况,每次增加或删除用户时都必须登录到服务器上去,而且还缺少必要的权限管理,因为用户对所有在/home/git下的git项目都拥有读写权限。当团队成员人数达到成百上千时可以使用gitosis或者gitolite管理,好像还有自动权限管理的功能~

原文链接

&#x1f4a1; 更多好文欢迎关注我的公众号~

《Git | CentOS 7搭建git服务端》


推荐阅读
  • linux下的mesa一般版本比较低,按照高版本mesa1.下载代码下载路径:https:www.mesa3d.org用git下载容易失败。用Downl ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
  • Git 第二章 Git 安装和卸载
    1.Git安装1.1软件下载打开[git官网]https:git-scm.com,下载git对应操作系统的版本。所有东西下载慢的话就可以去找镜像!官网 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 20209测试通过:eclipse安装svn插件
    网址不能用了,新的办法参考:https:quantum6.blog.csdn.netarticledetails117250800下载了最新的ecli ... [详细]
  • 1jdk去网站下载,然后拷贝到linux上;或直接wgethttp:download.oracle.comotn-pubjavajdk8u181-b1 ... [详细]
  • SVN安装配置和使用
    简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
  • 1找现有的镜像dockerhub上搜索到一个,其在github上公布了镜像构建的dockerfile,并且支持http和svn两种协议,就这个吧。https:github.come ... [详细]
  • TheProblem:-Iwhanttoperiodicalymakeabackupofmydatabase,forthispurpose ... [详细]
  • [精华]原来win+apache实现ssl的证书认证如此简单http:www.chinaunix.net作者:ataman发表于:2008-05-2218:16:46【 ... [详细]
author-avatar
哈哈哈阿笑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有